The present invention relates to job scheduling in a computing environment, and more particularly to a method and system for determining and describing available resources and capabilities in a grid environment or the like to match jobs to available endpoints or resources.
In computing environments that receive multiple jobs to be performed across multiple, shared resources, jobs received by a computing environment are scheduled to match the most appropriate, available resources or endpoints to the different jobs for the most efficient use of the resources and timely completion of the jobs. In such computing environments or scheduling clusters for matching jobs to resources, resources may send their resource attributes to a job scheduler. The resource attributes may include available memory, central processing unit (CPU) type and speed, virtual memory size, physical location as well as other attributes.
A resource request accompanying a job may define the required set of resource attributes to run the job. The job scheduler acts as a broker by matching and ranking a resource offer with a job request, making certain that all requirements are satisfied. After a resource has been matched to a job, the resource is allocated for the period of time that the job is being executed. The allocation is “attribute” based. There are two types of attributes: a consumable attributes and a static attribute. A consumable attribute is consumed by a job in a measurable quantity such as available memory. A static attribute has a static or fixed value or parameter such as operating system type, speed or the like. A resource request associated with a job is expected to provide a quantitative estimate of any consumable attribute the job will require. Each consumable attribute in a resource that may be matched to a job is checked to confirm its existence and availability and each static attribute is checked for the existence. If all the required consumable attributes in a resource are available and all the required static attributes in the resource exist, the resource is considered for allocation and may be allocated to the job request. Once the resource is allocated, the requested amount of consumable attribute is subtracted from the available amount of attribute and will not be available for other jobs until released. If consumable resources are not available at the start time of a job, the job request waits for the resources to be freed by other allocations.
This process of resource matching and allocation works well where resources are homogeneous or have the same or similar application servers, hardware platforms and the like. The job scheduler understands and can evaluate the most appropriate endpoint and resources. As a scheduling cluster becomes more heterogeneous, e.g., different application servers, different hardware platforms, etc., the comparison of resources can no longer be a simple comparison. As scheduling clusters are aggregated, the resource information becomes larger and more heterogeneous by virtue of the different cluster vendors and the different endpoints or resources within them.